package com.iaz.tech.tools.tasks.schedule;

import com.iaz.tech.tools.tasks.ability.IScheduleAble;
import com.iaz.tech.tools.tasks.ability.IScheduleCursorAble;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.HashMap;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 实际计划执行，
 * 1) 用于进行计划处理
 * 2) 支持子任务的监控
 */
@EqualsAndHashCode(callSuper = true)
@Data
public abstract class AZPlan extends ISchedule {
	
	/**
     * 日志
     */
    private final static Logger logger = (Logger) LoggerFactory.getLogger( AZPlan.class );
    
    /* 执行的游标 */
    private IScheduleCursorAble cursor = null;

    /**
     * KEY ： 执行步骤，用于依次执行
     */
    private Map<Long, IScheduleAble> Items = new HashMap<Long, IScheduleAble>();

	@Override
	public Map<Long, IScheduleAble> children() {
		try {
			return this.Items;
		} catch(Exception e) {
			logger.error("出现异常：" + e.getMessage());
		}
		return null;
	}

	/**
	 * 增加子类
	 * @param item
	 */
	public void add(IScheduleAble item) {
		try {
			if( item == null ) return;
			long key_index = this.Items.size();
			this.Items.put(key_index, item);
		} catch(Exception e) {
			logger.error("出现异常：" + e.getMessage());
		}
	}

	@Override
	public void stop() {
		try {
			
		} catch(Exception e) {
			logger.error("出现异常：" + e.getMessage());
		}
	}

}
